package unq_ui.tp_robots_web_wicket;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.model.CompoundPropertyModel;
import robots.models.JugadorAppModel;
import robots.models.VentaRobotAppModel;

public class VentaPage extends WebPage {

	final private Idioma idioma;
	private static final long serialVersionUID = 1L;
	private CompoundPropertyModel<VentaRobotAppModel> ventaCompoundPropertyModel;
	private VentaRobotAppModel venderAppModel;
	private JugadorAppModel modelAnterior;

	public VentaPage(VentaRobotAppModel ventaModel, JugadorAppModel modelAnterior, Idioma idioma) {
		this.idioma= idioma;
		this.modelAnterior= modelAnterior;
		this.venderAppModel = ventaModel;
		this.ventaCompoundPropertyModel = new CompoundPropertyModel<VentaRobotAppModel>(venderAppModel);
		Form<VentaRobotAppModel> formVenta = new Form<VentaRobotAppModel>("formVenta", this.ventaCompoundPropertyModel);
		this.agregarLabelsVenta(formVenta);
		this.agregarBotonesVenta(formVenta);
		add(formVenta);
		agregarLabelsDeIdioma(formVenta);
	}

	private void agregarLabelsDeIdioma(Form<VentaRobotAppModel> formVenta) {
		formVenta.add(new Label("vendiendoA",idioma.vendiendoA_4));
		formVenta.add(new Label("precioOriginal",idioma.precioOriginal_4));
		formVenta.add(new Label("porcentajeDeDanio",idioma.porcentajeDeDanio_4));
		formVenta.add(new Label("ofertaDeSistema",idioma.ofertaDelSistema_4));
		formVenta.add(new Label("textoNuevaOferta",idioma.nuevaOferta_4));
		formVenta.add(new Label("textoRechazar",idioma.rechazar_4));
		formVenta.add(new Label("textoAceptar",idioma.aceptar_4));
	}

	private void agregarLabelsVenta(Form<VentaRobotAppModel> formVenta) {
		formVenta.add(new Label("nombre", this.ventaCompoundPropertyModel.bind("robot.nombre")));
		formVenta.add(new Label("deterioro", this.ventaCompoundPropertyModel.bind("robot.danio")));
		formVenta.add(new Label("precio", this.ventaCompoundPropertyModel.bind("robot.precio")));
		formVenta.add(new Label("ofertaDelSistema", this.ventaCompoundPropertyModel.bind("ofertaDelSistema")));
	}
	

	private void agregarBotonesVenta(final Form<VentaRobotAppModel> formVenta) {
		formVenta.add(new IndicatingAjaxButton("nuevaOferta") {
			private static final long serialVersionUID = 1L;
			@Override
			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				venderAppModel.rechazarOferta();
				venderAppModel.getOfertaDelSistema();
				target.add(formVenta);
			}
		});
		
		formVenta.add(new Button("rechazar") {
			private static final long serialVersionUID = 1L;
			@Override
			public void onSubmit() {	
				modelAnterior.setCompraVentaReparacionMejoraRespuest(idioma.rechazarOferta_4);
				setResponsePage(new MainPage(modelAnterior,idioma));
			}
		});
		
		formVenta.add(new Button("aceptar") {
			private static final long serialVersionUID = 1L;
			@Override
			public void onSubmit() {
				venderAppModel.vender();
				modelAnterior.setCompraVentaReparacionMejoraRespuest(idioma.aceptarOferta_4);
				setResponsePage(new MainPage(modelAnterior,idioma));
			}
		});
	}
}
